#pragma rtGlobals=1 // Use modern global access method. //////////////////////////////////////////////////////////////////////////// //標準光源を分光器で測定した後、 //そのxデータをもとに、測定された範囲の //「標準光源の真値」ウェーブを作成します // 2003.12.18作成 //////////////////////////////////////////////////////////////////////////// macro make_hyouzyun() variable v1 v1=make_hyouzyun1() endmacro Function make_hyouzyun1() //ダイアログを表示して、標準光源測定データのxウェーブを読み込ませる。 string rhyox prompt rhyox,"「測定した標準光源」のxデータ(nm)を選択してください。",popup,wavelist("*",";","") string thyoyname prompt thyoyname,"作成する「標準光源の真値」ウェーブの名称を記述してください。" doprompt "「測定した標準光源」のxウェーブから、対応する「標準光源の真値」ウェーブを作成します。",rhyox,thyoyname //「キャンセル」が押されたかどうか確認する if(V_Flag!=1) //「キャンセル」が押されなかった場合 //作成するウェーブの名称が未記入の場合をチェック if(strlen(thyoyname)==0) doalert 0,"error:作成する「標準光源の真値」のウェーブ名を入力してください。" else //次の操作へ variable v2 v2=make_hyouzun2(rhyox,thyoyname) endif endif end function make_hyouzun2(rhox,thoyname) //xデータから、その範囲の「真の標準光源のデータ」を作成 string rhox string thoyname // wave rox=$rhox //観測xデータ //xデータより、真の標準光源を記憶するウェーブを作成する duplicate/O rox,$thoyname wave thy=$thoyname //真の標準光源を再現する係数ウェーブを作ります。 make/N=22/O tw tw[0]=1.889605868172448 tw[1]=544.0386710366886 tw[2]=222.2063276249474 tw[3]=3.6875338428979 tw[4]=709.9716988280741 tw[5]=271.078925295604 tw[6]=6.766506878970294 tw[7]=883.1992563692287 tw[8]=474.6697773535347 tw[9]=4.378038573989744 tw[10]=1180.039110653687 tw[11]=576.9879535592714 tw[12]=3.617291320136306 tw[13]=1499.1910163941 tw[14]=906.1993589466764 tw[15]=-0.1532193857040117 tw[16]=323.9344438127604 tw[17]=167.4213892676359 tw[18]=1.796001323037724 tw[19]=2170.852541211985 tw[20]=1482.543497788186 tw[21]=0 variable v3=0 do thy[v3]=(tw[0]*exp(-((rox[v3]-tw[1])/(tw[2]/1.665))^2)+tw[3]*exp(-((rox[v3]-tw[4])/(tw[5]/1.665))^2)+tw[6]*exp(-((rox[v3]-tw[7])/(tw[8]/1.665))^2)+tw[9]*exp(-((rox[v3]-tw[10])/(tw[11]/1.665))^2)+tw[12]*exp(-((rox[v3]-tw[13])/(tw[14]/1.665))^2)+tw[15]*exp(-((rox[v3]-tw[16])/(tw[17]/1.665))^2)+tw[18]*exp(-((rox[v3]-tw[19])/(tw[20]/1.665))^2)+tw[21]) v3=v3+1 while(v3